In packet communication networks, data packets are typically transmitted from a source node, via a path made up of multiple links, to a destination node. End-to-end transmission (from source node to destination node) is commonly handled by transport-layer protocols, such as the well-known Transport Control Protocol (TCP). In reliable transport protocols, the destination node tracks and acknowledges serial numbers of arriving packets and may request retransmission when a packet is lost or corrupted.
Transmission of the packet over each of the links (also referred to as hops) along the path is handled by a link-layer protocol, which controls the interaction between the nodes at either end of the link. Common link-layer protocols, such as the Ethernet and InfiniBand data link protocols, use error detection mechanisms, such as cyclical redundancy codes (CRC), to detect and drop packets containing errors. In general, however, link-layer protocols do not provide mechanisms for packet acknowledgment and retransmission on demand.
Some link-layer retransmission schemes are known in the art. For example, U.S. Pat. No. 7,016,304, whose disclosure is incorporated herein by reference, describes a link-layer system that includes a link-layer control module and a retry queue for storing transmitted data packets. The retry control module is coupled to the link layer-control module, which directs the retry queue to discard the transmitted data packets when the link-layer control module receives an acknowledgment bit.
As another example, U.S. Patent Application Publication 2009/0213861, whose disclosure is incorporated herein by reference, describes a mechanism for reliable link-layer (RLL) packet retry. RLL packets comprises a RLL header preceding a data packet. The RLL header comprises an RLL start-of-frame (SOF) character and an RLL packet sequence number (PSN). If the transmitting port does not receive an RLL acknowledgment packet from the link, acknowledging receipt of the data packet, the port re-transmits the data packet from its buffer.